package Beans;

import java.io.Serializable;
import java.util.ArrayList;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.model.DualListModel;

import upis.pf.DAO.PratoDAO;
import upis.pf.DAO.ProdutoDAO;
import upis.pf.DTO.IngredienteDTO;
import upis.pf.DTO.PratoDTO;
import upis.pf.DTO.ProdutoDTO;

@ManagedBean(name="pratoBean")
@ViewScoped
public class PratoBean implements Serializable {
	
	private ArrayList<ProdutoDTO> produtos;
	private ArrayList<PratoDTO> pratos;
	
	private PratoDTO prato = new PratoDTO();
	private PratoDTO pratoSelec = new PratoDTO();
	private PratoDAO pratoDAO = new PratoDAO();
	
	//private ArrayList<IngredienteDTO> ingredientesSelecionados = new ArrayList<IngredienteDTO>();
	private IngredienteDTO[] ingredientesSelecionados;
	
	

	private DualListModel<IngredienteDTO> plIngredientes;
	

	public PratoBean() {
		ProdutoDAO produtoDAO = new ProdutoDAO();
		IngredienteDTO ing;
		
		produtos = produtoDAO.todosProdutos();
		pratos = pratoDAO.todosPratos();
		
		/*
		 * Inicia lista de ingredientes
		 */
		for(ProdutoDTO prod : produtos) {
			ing = new IngredienteDTO();
			
			ing.setProduto(prod);
			//ingredientesSource.add(ing);
		}
		
	}
	
	public String incluir() {
		pratoDAO.incluir(prato);
		
		return "/crud/prato";
	}
	
	public String excluir() {
		pratoDAO.excluir(pratoSelec);
		
		return "/crud/produto";
	}
	
	public void cancelaOp() {
		pratoSelec = new PratoDTO();
	}
	
	/*
	 * Get's/Set's
	 */
	
	public IngredienteDTO[] getIngredientesSelecionados() {
		return ingredientesSelecionados;
	}

	public void setIngredientesSelecionados(
			IngredienteDTO[] ingredientesSelecionados) {
		this.ingredientesSelecionados = ingredientesSelecionados;
	}

	public DualListModel<IngredienteDTO> getPlIngredientes() {
		return plIngredientes;
	}

	public void setPlIngredientes(DualListModel<IngredienteDTO> plIngredientes) {
		this.plIngredientes = plIngredientes;
	}

	public ArrayList<PratoDTO> getPratos() {
		return pratos;
	}

	public void setPratos(ArrayList<PratoDTO> pratos) {
		this.pratos = pratos;
	}

	public ArrayList<PratoDTO> todosPratos() {
		return new ArrayList<PratoDTO>();
	}
	
	public PratoDTO consultarPrato() {
		return new PratoDTO();
	}
	
	public ArrayList<ProdutoDTO> getProdutos() {
		return produtos;
	}

	public void setProdutos(ArrayList<ProdutoDTO> produtos) {
		this.produtos = produtos;
	}

	public PratoDTO getPrato() {
		return prato;
	}

	public void setPrato(PratoDTO prato) {
		this.prato = prato;
	}

	public PratoDTO getPratoSelec() {
		return pratoSelec;
	}

	public void setPratoSelec(PratoDTO pratoSelec) {
		this.pratoSelec = pratoSelec;
	}
	
	
}
